﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel.DataAnnotations;

namespace Framework.Comum.DataAnnotation
{
    public class ValidadorComparadorBase : ValidationAttribute
    {
        public string Campo2 { get; set; }
        public TipoComparacao Tipo { get; set; }

        public ValidadorComparadorBase(string campo2, TipoComparacao tipo)
        {
            this.Campo2 = campo2;
            this.Tipo = tipo;
        }

        public override string FormatErrorMessage(string name)
        {
            return string.Format(this.ErrorMessageString, name, this.Campo2);
        }
        
        protected IComparable RecuperarSegundoComparador(ValidationContext validationContext)
        {
           
            var propertyInfo = validationContext
                                  .ObjectType
                                  .GetProperty(this.Campo2);
            if (propertyInfo != null)
            {
                var secondValue = propertyInfo.GetValue(
                    validationContext.ObjectInstance, null);
                return secondValue as IComparable;
            }
            return null;
        }
    }
}
